Data transmission technology continues to experience significant growth, particularly in the area of communications. People exchange information every day using such devices as telephones, faxes, pagers, etc. In order to make this communication seamless, protocols have been established to designate how data should be transmitted between devices in a communication network.
Open Systems Interconnection (OSI) is a description of how messages should be transmitted between any two points in a communication network. OSI divides the network into seven layers. The first layer, called the physical layer, conveys bitstreams of data through the network at the electrical and mechanical level. The physical layer provides the protocol for sending and receiving data on a transmission carrier or subcarrier. An exemplary implementation of this protocol is defined by the IEEE 802.11a standard, IEEE std. 802.11a-1999, approved Sep. 13, 1999 which specifies the physical layer of a wireless LAN system.
As data is transmitted along a network, portions of the data may become corrupted by noise from the network itself or interference from other transmission sources. Part of the physical layer protocol includes treating the transmitted data to minimize error effects on the entire bitstream and ultimately the data quality at the receiving end. One treatment protocol includes interleaving the transmitted data. Interleaving involves rearranging the data as it is transmitted such that if the received stream is corrupted, the corrupted area will be dispersed once the inverse operation (de-interleaving) is applied. Thus, the receiver receives a bitstream of good data with an intermittent corrupt bit in a way that enables the receiver to correct the corruption and restore the original transmitted bitstream.
Conventional interleavers include a table driven approach and an unroll approach. In the table driven approach, a memory table stores a location of every bit output from the network. For every input bit, the method reads the location of the corresponding output bit from the table and places the input bit accordingly in the output bitstream. In the unroll approach, a completely rolled piece of code uses a few instructions to extract each input bit and directly shuffle it to the appropriate location in the output bitstream. However, these approaches use a large number of instructions and/or a large number of memory accesses to perform the interleaving. As a result, conventional interleavers are slow and inefficient.
Accordingly, there is a need in the art for an efficient interleaving method and system.